import supertest from 'supertest';
import  assert from  "assert";
import { WEB_PROT } from '../config/config';

// describe()：测试套件
// it()：测试用例
// before()：所有测试用例的统一前置动作
// after()：所有测试用例的统一后置动作
// beforeEach()：每个测试用例的前置动作
// afterEach()：每个测试用例的后置动作

const WECHAT_ID = 11;
const DEVICE_ID = 'gh_eb00ce130d66_ffefa233836f9600';
const OPEN_ID = 'o1rqj03mGi4NMt3X8Bo2XcbRSZhk';
const DEVICE_UUID = '10b7000000001d';
const IP = '127.0.0.1';
let FILE_NAME = '';
// 专辑类别
const CATEGORY_ID = 1;
const FAVORITE_CATEGORY_ID = 5;
// 专辑组id
const ALBUM_GROUP_ID = 1;

// 专辑,以及专辑中的音频
const ALBUM_ID = 57335894593;
// 2-美丽的南沙群岛
const AUDIO_ID = 85032816175;

describe('Router common',function(){
    const URL = `http://localhost:${WEB_PROT}/web_api/`;
    before(function(done){
        done();
    });

    describe('# 获取公众号信息',function(){
        it(' get_public_platform ',function(done){
            supertest(URL).get('get_public_platform?wechat_id='+WECHAT_ID)
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done()
              });
        })
    });

    describe('# 绑定设备', function() {
        it(' bind_new_device ',function(done){
            supertest(URL)
            .post('bind_new_device')
            .send({device_id:DEVICE_ID, openid:OPEN_ID, nick_name:'杨尚伟'})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(-1,res.body.errcode);
                done()
              });
        })
    })

    describe('# 解绑设备', function() {
        it(' unbind ',function(done){
            supertest(URL)
            .post('unbind')
            .send({device_sn:DEVICE_ID, openid:OPEN_ID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe('# 获取绑定用户', function() {
        it(' get_bind_users ',function(done){
            supertest(URL)
            .post('unbind')
            .send({device_sn:DEVICE_ID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe('# 获取绑定设备信息', function() {
        it(' openid ',function(done){
            supertest(URL)
            .post('openid')
            .send({openid:OPEN_ID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe('# 获取绑定设备信息', function() {
        it(' get_device_sn  ',function(done){
            supertest(URL)
            .post('get_device_sn')
            .send({ip:IP})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })
    
    describe('# 获取声波音频URL', function() {
        it(' get_sound_waves  ',function(done){
            supertest(URL)
            .post('get_sound_waves')
            .send({ssid:'yangshangwei', password:'12345678'})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                FILE_NAME = res.body.data;
                console.log(`FILE_NAME:${FILE_NAME}`);
                done();
              });
        })
    })


    describe('# 删除声纹音频 ', function() {
        it('# del_sound_waves  ',function(done){
            supertest(URL)
            .post('del_sound_waves')
            .send({ip:IP})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 分享设备二维码', function() {
        it(' # share_qrcode',function(done) {
            supertest(URL)
            .post('share_qrcode')
            .send({device_sn:DEVICE_ID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 删除指定用户', function() {
        it(' # remove_device_user',function(done) {
            supertest(URL)
            .post('remove_device_user')
            .send({ device_sn:DEVICE_ID, openid:OPEN_ID })
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 更新设备信息', function() {
        it(' # update_device_info',function(done) {
            supertest(URL)
            .post('update_device_info')
            .send({ device_id:DEVICE_ID, nick_name:'杨尚伟', brithday:'', gender:1, avatar_url:'' } )
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 获取专辑组', function() {
        it(' # get_album_group',function(done) {
            supertest(URL)
            .post('get_album_group')
            .send({ album_group_template_id:1, permission_group_id:0 } )
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 获取专辑组', function() {
        it(' # rank_album',function(done) {
            supertest(URL)
            .post('rank_album')
            .send({ uuid:DEVICE_UUID, range:'1,2,3,4' })
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 单个专辑组分页', function() {
        it(' # rank_album_page',function(done) {
            supertest(URL)
            .post('rank_album_page')
            .send({ uuid:DEVICE_UUID, range:'1,2,3,4',play_rate:0 })
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 获取用户自己的专辑', function() {
        it(' # primary_album_list',function(done) {
            supertest(URL)
            .post('primary_album_list')
            .send({ uuid:DEVICE_UUID })
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 获取专辑音频列表', function() {
        it(' # album_list',function(done) {
            supertest(URL)
            .post('album_list')
            .send({ uuid:DEVICE_UUID,category_id: CATEGORY_ID,latest_id:0})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 专辑组分页', function() {
        it(' # album_group_by_id',function(done) {
            supertest(URL)
            .post('album_group_by_id')
            .send({ uuid:DEVICE_UUID,album_group_id: ALBUM_GROUP_ID,latest_id:0})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 获取单个专辑音频列表', function() {
        it(' # get_audios',function(done) {
            supertest(URL)
            .post('get_audios')
            .send({ uuid:DEVICE_UUID,album_id: ALBUM_ID,latest_id:0,count:0})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 获取设备的用户信息', function() {
        it(' # user_info',function(done) {
            supertest(URL)
            .post('user_info')
            .send({ device_sn:DEVICE_ID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 获取专辑信息', function() {
        it(' # album_info',function(done) {
            supertest(URL)
            .post('album_info')
            .send({ album_id:ALBUM_ID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    // ===========收藏=============

    describe(' # 添加专辑到我的收藏', function() {
        it(' # add_album',function(done) {
            supertest(URL)
            .post('add_album')
            .send({ album_id:ALBUM_ID,category_id:CATEGORY_ID,uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 从我的收藏中移除专辑', function() {
        it(' # remove_album',function(done) {
            supertest(URL)
            .post('remove_album')
            .send({ album_id:ALBUM_ID,category_id:CATEGORY_ID,uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 添加单个音频到我的收藏', function() {
        it(' # add_audio',function(done) {
            supertest(URL)
            .post('add_audio')
            .send({ audio_id:AUDIO_ID,category_id:CATEGORY_ID,uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 从我的收藏移除音频', function() {
        it(' # remove_audio',function(done) {
            supertest(URL)
            .post('remove_audio')
            .send({ audio_id:AUDIO_ID,category_id:CATEGORY_ID,uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 添加到我的最爱', function() {
        it(' # add_store_audio',function(done) {
            supertest(URL)
            .post('add_store_audio')
            .send({ audio_id:AUDIO_ID,category_id:FAVORITE_CATEGORY_ID,uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 添加到我的最爱', function() {
        it(' # add_store_audio',function(done) {
            supertest(URL)
            .post('add_store_audio')
            .send({ audio_id:AUDIO_ID,category_id:FAVORITE_CATEGORY_ID,uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 从我的最爱列表中删除指定的音频', function() {
        it(' # remove_store_audio',function(done) {
            supertest(URL)
            .post('remove_store_audio')
            .send({ audio_id:AUDIO_ID,category_id:FAVORITE_CATEGORY_ID,uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 获取我的最爱的音频个数', function() {
        it(' # favorite_count',function(done) {
            supertest(URL)
            .post('favorite_count')
            .send({uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 获取我的最爱的音频个数', function() {
        it(' # category_count',function(done) {
            supertest(URL)
            .post('category_count')
            .send({uuid:DEVICE_UUID,range:'1,2,3,4'})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 获取我的最爱音频列表', function() {
        it(' # favorite_list',function(done) {
            supertest(URL)
            .post('favorite_list')
            .send({uuid:DEVICE_UUID,id:0})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 获取我的收藏类别', function() {
        it(' # store_category_list',function(done) {
            supertest(URL)
            .post('store_category_list')
            .send({uuid:DEVICE_UUID,category_id:CATEGORY_ID,latest_id:0})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 清空我的收藏', function() {
        it(' # remove_favorite',function(done) {
            supertest(URL)
            .post('remove_favorite')
            .send({uuid:DEVICE_UUID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })


    describe(' # 清空我的收藏类别音频', function() {
        it(' # remove_store_category',function(done) {
            supertest(URL)
            .post('remove_store_category')
            .send({uuid:DEVICE_UUID,category_id:CATEGORY_ID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

    describe(' # 查看我的所有收藏音频', function() {
        it(' # find_store_list',function(done) {
            supertest(URL)
            .post('find_store_list')
            .send({uuid:DEVICE_UUID,category_id:CATEGORY_ID})
            .expect('Content-Type', /json/)
            .expect(200) //Status code
            .end(function(err,res) {
                if (err) {
                  throw err;
                }
                assert.equal(0,res.body.errcode);
                done();
              });
        })
    })

})












